There was a time when information presented by a computer was limited to numbers and/or text. With modern personal computers, however, a wide variety of information can be presented, including graphics, audio, and video.
The number of information sources has also multiplied. Multimedia information is now available from local digital storage such as CD-ROMs, from remote providers and online services, and even from local analog sources such as television and radio receivers.
While such variety allows application programs to provide much richer content, it also creates a degree of complexity for programmers. Such complexity is a result primarily of the different ways in which application programs must interact with different computer and network elements to render information of various kinds from different sources.
It is possible to relieve application programs of some of the details of information rendering by providing APIs (application programming interfaces) that take care of such details. Even with such APIs, however, application programs must be aware of the types of information they are rendering and must be able to determine the correct APIs for rendering such information. This approach makes it difficult to add new media types to a system. In order to take advantage of a new media type, each application program has to be rewritten so that it is aware of the proper APIs to use for rendering the media type.